
const 图片画点 = async (imagePath) => {
  const sharp = require("sharp");
const { randomInt } = require("crypto");
  try {
    const metadata = await sharp(imagePath).metadata();
    const imageWidth = metadata.width;
    const imageHeight = metadata.height;
    const pointRadius = Math.floor(imageWidth / 50); // 点的半径

    // 生成随机位置
    const randomX = randomInt(0, imageWidth - pointRadius);
    const randomY = randomInt(0, imageHeight - pointRadius);

    // 创建一个新的图像缓冲区
    const { data, info } = await sharp(imagePath)
      .raw()
      .ensureAlpha()
      .toBuffer({ resolveWithObject: true });

    // 修改指定位置的颜色
    for (let x = 0; x < pointRadius; x++) {
      for (let y = 0; y < pointRadius; y++) {
        const pixelIndex = ((randomY + y) * info.width + (randomX + x)) * 4;

        // 修改指定位置的颜色
        data[pixelIndex + 0] = 255; // Red
        data[pixelIndex + 1] = 0; // Green
        data[pixelIndex + 2] = 0; // Blue
        data[pixelIndex + 3] = 255; // Alpha
      }
    }

    // 将修改后的数据重新转换为图像
    const modifiedImageData = await sharp(data, {
      raw: { width: info.width, height: info.height, channels: 4 },
    })
      .jpeg() // 输出为 JPEG 格式
      .toBuffer();

    // 将图像转换为 Base64 编码
    return Buffer.from(modifiedImageData).toString("base64");
  } catch (err) {
    console.error(err);
    throw err;
  }
};

module.exports = 图片画点;
